home *** CD-ROM | disk | FTP | other *** search
-
- /* bildschirmschoner-modul in C */
- /* achtung: ausführlichere beschreibung in ss_demo.pas */
-
- #ifndef __LARGE__
- #error Large Model wird benötigt!
- #endif
-
- /* Large Model kann bei anderen Compilern über andere Konstanten abgefragt
- werden. Sie können natürlich auch die Abfrage komplett rausnehmen ... */
-
-
-
- /*#define _RUN */
-
- /* wenn _RUN definiert ist, kann eine normale .EXE-Datei erzeugt werden,
- die sich einfacher debuggen läßt.
- */
-
-
- #include <windows.h>
-
- #include <string.h>
-
-
- #define APIENTRY FAR _export PASCAL
- #define SHORT short
- #define DUMMYREFERENCE(a) (a)=(a)
-
-
- typedef struct tagGLOBALS
- {
- HANDLE hInstance;
- } GLOBALS;
-
- GLOBALS globaldata;
-
-
- /* Prototyp für Funktion aus lm_util.dll */
-
- BOOL LgdDefProc (LPLONG lRet, HWND hWnd, WORD msg, WORD wParam, LONG lParam);
-
-
-
- /* Prototypen für Funktionen aus dieser Datei */
-
- VOID APIENTRY ScreenSaverID (LPWORD lpwMagic,
- LPLONG lplFunctions,
- LPSTR lpchName,
- SHORT cchName,
- LPSTR lpchDesc,
- SHORT cchDesc);
-
- LONG APIENTRY ScreenSaver (LONG lDuration, LONG lFlags);
-
- VOID APIENTRY ScreenSaverOptions (HWND hwnd);
-
- VOID APIENTRY ScreenSaverAbout (HWND hwnd);
-
-
-
- /* Prototyp für Funktion aus ss_cDem2.c */
-
- LONG Blackness (LONG lDuration, LONG lFlags);
-
-
-
- /* Implementierung */
-
- VOID APIENTRY ScreenSaverID (LPWORD lpwMagic,
- LPLONG lplFunctions,
- LPSTR lpchName,
- SHORT cchName,
- LPSTR lpchDesc,
- SHORT cchDesc)
- {
- *lpwMagic = 0x6874;
- *lplFunctions = 8 + 1; /* 1: about, 2:options, 3:both */
- /* 4: erfordert nichtleeren bildschirm */
- /* 8: hinterläßt leeren bildschirm */
- strncpy (lpchName, "zC-Blackness", cchName-1);
- /* das erste zeichen des namens wird nicht angezeigt, es legt
- lediglich die sortierung fest. */
-
- if (cchName > 0)
- lpchName [cchName-1] = 0;
- /* strncpy erzeugt keine NULL-terminierten string, deshalb
- sicherheitshalber ein NULL-Byte anfügen */
-
- strncpy (lpchDesc,
- "Blackness:\n\nMacht den Bildschirm schwarz\n\nBeispiel eines einfachen Screen Savers\n",
- cchDesc-1);
- if (cchDesc > 0)
- lpchName [cchDesc-1] = 0;
- }
-
- LONG APIENTRY ScreenSaver (LONG lDuration, LONG lFlags)
- {
- /* Blackness in ss_cDem2.c */
-
- return Blackness (lDuration, lFlags);
- }
-
- VOID APIENTRY ScreenSaverOptions (HWND hwnd)
- {
- DUMMYREFERENCE (hwnd);
- }
-
- VOID APIENTRY ScreenSaverAbout (HWND hwnd)
- {
- MessageBox (hwnd, "Beispiel zu 'The Lights Go Down'\n(C) 1992 Leo Minor",
- "Blackness", MB_OK | MB_APPLMODAL);
- }
-
-
- #ifndef _RUN
- int FAR PASCAL LibMain( HANDLE hInstance,
- WORD wDataSeg,
- WORD wHeapSize,
- LPSTR lpszCmdLine)
- {
- DUMMYREFERENCE (wDataSeg);
- DUMMYREFERENCE (wHeapSize);
- DUMMYREFERENCE (lpszCmdLine);
-
- globaldata.hInstance = hInstance;
- return 1;
- }
- #endif
-
-
- #ifdef _RUN
- int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
- LPSTR lpCmdLine, int nCmdShow)
- {
- globaldata.hInstance = hInstance;
-
- ScreenSaver (20, 0); /* für 20 Sekunden aktivieren */
- }
- #endif
-